জাভাস্ক্রিপ্টে অবজেক্ট হলো মূল। আপনি যদি অবজেক্ট বুঝতে পারেন, তাহলে পুরো জাভাস্ক্রিপ্ট বুঝতে পারবেন।
জাভাস্ক্রিপ্টে প্রায় সবকিছুই অবজেক্ট।
জাভাস্ক্রিপ্টে প্রিমিটিভ ভ্যালু ব্যতীত সকল ভ্যালুই অবজেক্ট।
প্রিমিটিভ ভ্যালু হলোঃ স্ট্রিং("Azizur Rahman"), নম্বর(৩.১৪), true, false, null এবং undefined
জাভাস্ক্রিপ্ট ভ্যারিয়েবলে মাত্র একটি মান রাখা যায়ঃ
kt_satt_skill_example_id=1228
অবজেক্টও ভ্যারিয়েবল, কিন্তু অবজেক্টে অনেক মান রাখা যায়।
ভ্যালুগুলো name : value জোড়ায় জোড়ায় লিখা হয়(name এবং value কোলনের মাধ্যমে আলাদা করা হয়)।
kt_satt_skill_example_id=1230
জাভাস্ক্রিপ্ট অবজেক্টে ভ্যালুর একটি নাম থাকে।
জাভাস্ক্রিপ্ট অবজেক্টের নামযুক্ত এইসব ভ্যালুকে প্রোপার্টি বলে।
প্রোপার্টি | ভ্যালু |
---|---|
firstName | Azizur |
lastName | Rahman |
age | 32 |
eyeColor | black |
মেথড হলো অবজেক্টের কার্যক্রম যা অবজেক্টের মাধ্যমে সম্পাদিত হয়।
অবজেক্ট প্রোপার্টিগুলো প্রিমিটিভ ভ্যালু, অবজেক্ট এবং ফাংশন হতে পারে।
অবজেক্ট মেথড হলো একটি অবজেক্ট প্রোপার্টি যার মধ্যে ভ্যালু হিসেবে একটি ফাংশন ডেফিনেশন থাকে।
প্রোপার্টি | ভ্যালু |
---|---|
firstName | Azizur |
lastName | Rahman |
age | 32 |
eyeColor | black |
fullName | function() {return this.firstName + " " + this.lastName;} |
জাভাস্ক্রিপ্টে অবজেক্ট তৈরি করার কয়েকটি উপায় রয়েছেঃ
জাভাস্ক্রিপ্ট অবজেক্ট তৈরি করার এটিই সবচেয়ে সহজ পদ্বতি।
অবজেক্ট লিটারাল ব্যবহার করে একটি স্টেটমেন্টে অবজেক্ট ডিফাইন এবং তৈরি করা যায়।
অবজেক্ট লিটারাল হলো দ্বিতীয় বন্ধনীর {} মধ্যে কিছু name:value এর জোড়ার লিস্ট।
kt_satt_skill_example_id=1231
kt_satt_skill_example_id=1233
উপরের দুটি উদাহরণ একই রকম কাজ করে। তাই new Object() ব্যবহার করার প্রয়োজন নেই।
উপরের পদ্ধতিগুলোর কিছু সীমাবদ্ধতা আছে। কারন এগুলোর মাধ্যমে শুধুমাত্র একটি অবজেক্ট তৈরি করা যায়।
মাঝে মাঝে আমাদের একই ধরনের অনেক অবজেক্টের প্রয়োজন হতে পারে। তাই আমরা একটি অবজেক্ট টাইপ ব্যবহার করতে পারি।
অবজেক্ট টাইপ তৈরি করার আদর্শ পদ্ধতি হলো কনস্ট্রাক্টর ফাংশন ব্যবহার করাঃ
kt_satt_skill_example_id=1235
উপরের ফাংশনটি একটি অবজেক্ট কনস্ট্রাক্টর।
আপনার একটি অবজেক্ট কনস্ট্রাক্টর থাকলে আপনি একই টাইপের অনেক অবজেক্ট তৈরি করতে পারবেনঃ
kt_satt_skill_example_id=1236
জাভাস্ক্রিপ্টে, যে অবজেক্টের কোডের মধ্যে this কি-ওয়ার্ড থাকে মূলত এই this এর মাধ্যমে ঐ অবজেক্টকে বুঝায়।
যদি কোন অবজেক্টের ফাংশনে this ব্যবহার করা হয়,তাহলে this এর ভ্যালু হচ্ছে ঐ ফাংশনটি যে অবজেক্টে রয়েছে।
যখন অবজেক্টের মধ্যে this ব্যবহার করা হয়, এর ভ্যালু ঐ অবজেক্টটি।
অবজেক্ট কনস্ট্রাক্টরের মধ্যে this কি-ওয়ার্ডের কোন ভ্যালু থাকে না।
অবজেক্ট তৈরি করার জন্য যখন অবজেক্ট কনস্ট্রাক্টর ব্যবহার করা হয় তখন this এর ভ্যালু হয় নতুন অবজেক্টটি।
this কোন ভ্যারিয়েবল নয়। এটি একটি কী-ওয়ার্ড। আপনি this এর ভ্যালু পরিবর্তন করতে পারবেন না।
জাভাস্ক্রিপ্টের কিছু বিল্ট-ইন কনস্ট্রাক্টরের উদাহরণ নিচে দেওয়া হলোঃ
kt_satt_skill_example_id=1238
Math() অবজেক্টটি এই লিস্টের মধ্যে নেই। Math একটি গ্লোবাল অবজেক্ট। Math অবজেক্টে new কি-ওয়ার্ডটি ব্যবহার করা যায় না।
জাভাস্ক্রিপ্ট অবজেক্টকে তার ভ্যালুর মাধ্যমে পরিচয় করা হয় না, এর নামের মাধ্যমে করা হয়।
kt_satt_skill_example_id=1239
উপরের উদাহরণটিতে person যদি একটি অবজেক্ট হয়,তাহলে উপরের এসাইনমেন্টটির মাধ্যমে আমরা person অবজেক্টকেই x এর মধ্যে রাখলাম,আমরা person এর মত হুবহু আরেকটি অবজেক্ট তৈরি করিনি। এখন person কে আমরা x এর মাধ্যমে এক্সেস করতে পারবো। x এর মধ্যে পরিবর্তন করলে person এর মধ্যেও পরিবর্তন হবে, কারণ তারা একই অবজেক্ট।
kt_satt_skill_example_id=1240
নোটঃ জাভাস্ক্রিপ্ট ভ্যারিয়েবল মিউটেবল নয়। শুধুমাত্র অবজেক্ট মিউটেবল।
জাভাস্ক্রিপ্ট অবজেক্টের সবচেয়ে গুরুত্বপূর্ণ অংশ হলো প্রোপার্টি।
জাভাস্ক্রিপ্ট অবজেক্টের ভ্যালুকে প্রোপার্টি বলা হয়।
প্রোপার্টিগুলোকে পরিবর্তন করা যায়, নতুন প্রোপার্টি যোগ করা যায় এবং ডিলেট করা যায়। কিন্তু কিছু প্রোপার্টি আছে যেগুলো পরিবর্তন করা যায় না।
গঠনপ্রণালীঃ
kt_satt_skill_example_id=1241
অথবা
kt_satt_skill_example_id=1242
অথবা
kt_satt_skill_example_id=1244
এক্সপ্রেশনে অবশ্যই প্রোপার্টির নাম উল্লেখ করতে হবে।
kt_satt_skill_example_id=1245
kt_satt_skill_example_id=1246
জাভাস্ক্রিপ্টের for...in স্টেটমেন্ট অবজেক্টের প্রোপার্টির মধ্যে লুপ করে।
kt_satt_skill_example_id=1247
প্রত্যেকটি প্রোপার্টির জন্য for...in লু্পের কোডগুলো একবার করে এক্সিকিউট হবে।
kt_satt_skill_example_id=1249
একটি অবজেক্টে নতুন প্রোপার্টি যোগ করতে, প্রোপার্টির নাম লিখে ভ্যালু দিয়ে দিলেই হয়ে যায়।
ধরুণ, person নামের একটি অবজেক্ট রয়েছে যাতে আপনি নতুন একটি প্রোপার্টি যুক্ত করবেনঃ
kt_satt_skill_example_id=1251
অবজেক্টের প্রোপার্টি ডিলেট করার জন্য delete কি-ওয়ার্ডটি ব্যবহার করা হয়ঃ
kt_satt_skill_example_id=1253
delete কি-ওয়ার্ড একটি অবজেক্টের প্রোপার্টি এবং তার ভ্যালু ডিলেট করে।
অবজেক্টে ব্যবহারের জন্যই delete প্রোপার্টি তৈরি করা হয়েছে, ভ্যারিয়েবল এবং ফাংশনে এর কোন ব্যবহার নেই।
সকল প্রোপার্টির একটি নাম আছে, এছাড়া এর একটি ভ্যালুও আছে।
প্রোপার্টির এট্রিবিউটগুলোর মধ্যে একটি হলো value ।
অন্যান্য এট্রিবিউটগুলো হলোঃ enumerable, configurable, এবং writable
এই এট্রিবিউটগুলো প্রোপার্টি এক্সেসের প্রাইভেসি ডিফাইন করে।
জাভাস্ক্রিপ্টে সকল এট্রিবিউটকে পড়া যায়, শুধুমাত্র ভ্যালু এট্রিবিউটকে পরিবর্তন করা যায়।
জাভাস্ক্রিপ্ট অবজেক্ট তার প্রোটোটাইপের প্রোপার্টিগুলো ইনহেরিট করে।
delete কি-ওয়ার্ডটি ইনহেরিটেড প্রোপার্টিগুলো ডিলিট করে না, কিন্তু আপনি যদি প্রোটোটাইপ প্রোপার্টি ডিলেট করেন, এর ফলে সকল অবজেক্ট প্রভাবিত হবে।
মেথড হলো অবজেক্টের কার্যক্রম যা অবজেক্টের মাধ্যমে সম্পাদিত হয়।
অবজেক্ট মেথড হলো একটি অবজেক্ট প্রোপার্টি যার মধ্যে ভ্যালু হিসেবে একটি ফাংশন ডেফিনেশন থাকে।
প্রোপার্টি | ভ্যালু |
---|---|
firstName | Azizur |
lastName | Rahman |
age | 32 |
eyeColor | black |
fullName | function() {return this.firstName + " " + this.lastName;} |
মেথডগুলো হলো ফাংশন যা অবজেক্টের প্রোপার্টি হিসেবে থাকে।
অবজেক্ট মেথড তৈরির গঠনপ্রণালীঃ
kt_satt_skill_example_id=1265
অবজেক্ট মেথড এক্সেসের গঠনপ্রণালীঃ
kt_satt_skill_example_id=1266
আপনি fullName() কে person অবজেক্টের মেথড এবং fullName কে প্রোপার্টি হিসেবে বর্ণনা করবেন।
যখন fullName প্রোপার্টিকে () এর মাধ্যমে কল করা হবে তখন এটি ফাংশন হিসেবে এক্সিকিউট হবে।
এই উদাহরণটি person অবজেক্টের fullName() মেথডকে এক্সেস করেঃ
kt_satt_skill_example_id=1267
আপনি () ছাড়া fullName প্রোপার্টিকে এক্সেস করলে ইহা সম্পূর্ন ফাংশন ডেফিনেশন রিটার্ন করবেঃ
kt_satt_skill_example_id=1269
এই উদাহরণে স্ট্রিং অবজেক্টের toUpperCase() মেথড ব্যবহার করে একটি টেক্সটকে বড়হাতের অক্ষরে পরিণত করা হয়েছেঃ
kt_satt_skill_example_id=1271
কোড এক্সিকিউশনের পর x এর ভ্যালুঃ
kt_satt_skill_example_id=1273
অবজেক্টের জন্য মেথড যোগ করতে এর কনস্ট্রাক্টর ফাংশনে মেথড ডিফাইন করা হয়ঃ
kt_satt_skill_example_id=1275
changeName() ফাংশন name এর ভ্যালুকে person এর lastName প্রোপার্টিতে এসাইন করে।
kt_satt_skill_example_id=1277
প্রতিটি জাভাস্ক্রিপ্ট অবজেক্টের একটি প্রোটোটাইপ থাকে। প্রোটোটাইপও একটি অবজেক্ট।
সকল জাভাস্ক্রিপ্ট অবজেক্ট তাদের প্রোপার্টি এবং মেথড তাদের প্রোটোটাইপ থেকে পায়।
অবজেক্ট লিটারাল অথবা new Object() দ্বারা তৈরি অবজেক্ট Object.prototype থেকে ইনহেরিট করে।
new Date() থেকে তৈরি অবজেক্ট Date.prototype থেকে ইনহেরিট করে।
Object.prototype হলো প্রোটোটাইপ চেইনের মধ্যে সবার উপরে।
সকল জাভাস্ক্রিপ্ট অবজেক্ট Object.prototype থেকে ইনহেরিট করে।
অবজেক্ট প্রোটোটাইপ তৈরির আদর্শ পদ্ধতি হচ্ছে একটি অবজেক্ট কনস্ট্রাক্টর ব্যবহার করাঃ
kt_satt_skill_example_id=1281
একই প্রোটোটাইপ থেকে একাধিক অবজেক্ট তৈরি করতে new কি-ওয়ার্ড ব্যবহার করে কনস্ট্রাক্টর ফাংশনকে কল করতে হয়ঃ
kt_satt_skill_example_id=1283
কনস্ট্রাক্টর ফাংশনটি Person এর সকল অবজেক্টের প্রোটোটাইপ।
কনস্ট্রাক্টর ফাংশনকে বুঝার জন্য এর নামের প্রথম অক্ষর বড়হাতের দেওয়া ভালো(তবে এটি বাধ্যতামূলক নয়)।
তৈরিকৃত অবজেক্টে নতুন প্রোপার্টি যুক্ত করা খুবই সহজঃ
kt_satt_skill_example_id=1284
এই প্রোপার্টিটি শুধুমাত্র myFather অবজেক্টে যুক্ত হবে। ইহা myMother অথবা অন্য কোন Person অবজেক্টে যুক্ত হবে না।
তৈরিকৃত অবজেক্টে নতুন মেথড যুক্ত করাও সহজঃ
kt_satt_skill_example_id=1286
মেথডটি myFather অবজেক্টে যুক্ত হবে, myMother অবজেক্টে যুক্ত হবে না।
প্রোটোটাইপে প্রোপার্টি যুক্ত করা অবজেক্টে প্রোপার্টি যুক্ত করার চেয়ে ভিন্ন।
kt_satt_skill_example_id=1287
প্রোটোটাইপে নতুন প্রোপার্টি যুক্ত করতে হলে, অবশ্যই আপনাকে ইহা কনস্ট্রাক্টর ফাংশনে যু্ক্ত করতে হবেঃ
kt_satt_skill_example_id=1288
প্রোটোটাইপের প্রোপার্টিতে ডিফল্ট ভ্যালু থাকতে পারে।
কনস্ট্রাক্টর ফাংশনে মেথডও ডিফাইন করা যায়ঃ
kt_satt_skill_example_id=1289
জাভাস্ক্রিপ্ট prototype প্রোপার্টি আপনাকে তৈরিকৃত একটি প্রোটোটাইপে নতুন প্রোপার্টি এবং মেথড যুক্ত করতে সাহায্য করেঃ
kt_satt_skill_example_id=1290
kt_satt_skill_example_id=1291
আরও দেখুন...